// import * as BaseConfigs from '@/conf/base';
// import axios, { HttpRequestError, HttpResponseError, HttpAuthError, HttpIntoError } from '@/api/base'
// import { UserType } from '@/enum';
import Vue from 'vue';

let ROOT_VUE;
let LOADING_TIMER = null;

export default class ToolPlugin {
    constructor() {

    }

    static install(Vue, options) {
        // console.log(Vue, options);
        ROOT_VUE = Vue;

        // for(let attr in BaseConfigs) {
        //   Vue.prototype[attr] = BaseConfigs[attr];
        // }

        //获取产品阐述code
        // Vue.prototype.$getProductParams = function() {
        //     let str = this.$route.path;
        //     let reg = /^\/product\/((?:[^\/]+?))(?:\/(?=$))?$/i;
        //     let params = reg.exec(str);
        //     params = params ? params[1] : '';
        //     return params.toUpperCase();
        // }

        //百度统计
        // Vue.prototype.$baiduPv = function (url) {
        //     if(!window._hmt)return;
        //     _hmt.push(['_setAutoPageview', false]);
        //     // let reg = /\?[^#\/]+/ig;
        //     // let href = window.location.href.replace(reg, '');
        //     // 拼接为 url.com + url 发送到百度统计平台
        //     if(url){
        //         _hmt.push(['_trackPageview', url]);
        //     }
        // }

        // 加载进度
        Vue.prototype.$openLoading = function(time = 1500) {
            clearTimeout(LOADING_TIMER);
            LOADING_TIMER = setTimeout(_ => {
                this.$root.$emit('openLoading');
            }, time)
        }

        Vue.prototype.$closeLoading = function() {
            clearTimeout(LOADING_TIMER);
            this.$root.$emit('closeLoading');
        }

        // Vue.prototype.$axios = function() {
        //     let url = window.location.href;
        //     let localStorage = window.localStorage;
        //     let key = 'notOAuth';
        //     let _this = this;
        //     if (this.$instance) {
        //         _this = this.$instance;
        //         url = _this.$route.fullPath;
        //         HttpAuthError(_ => {
        //             localStorage.setItem(key, Date.now());
        //             _this.$router.replace({
        //                 path: '/iframe',
        //                 query: {
        //                     prePage: encodeURIComponent(url)
        //                 }
        //             });
        //         });

        //         HttpRequestError(_ => {
        //             // _this.$openDialog({
        //             //     title: '探保网提示',
        //             //     message: '网络请求失败，请检查网络连通性'
        //             // });
        //         });

        //         HttpResponseError(_ => {
        //             // _this.$openDialog({
        //             //     title: '探保网提示',
        //             //     message: '出现了一些小问题，请稍后再试吧'
        //             // });
        //         });
        //         // 用户未登录回调错误
        //         HttpIntoError(userType => {
        //            let funs = {
        //                [UserType.AGENCY] () {
        //                     _this.$store.dispatch('agencyNotLogin')
        //                },
        //                [UserType.BUSINESS] () {
        //                     _this.$store.dispatch('businessNotLogin')
        //                }
        //            }
        //            funs = funs[userType]
        //            funs && funs()
        //         })
        //     }
        //     return axios
        // }

        // Vue.$axiosAddDialog = Vue.prototype.$axios;

        // 对话框
        Vue.prototype.$openDialog = function(opts) {
            this.$root.$emit('openDialog', opts);
        }

        // 提示框
        Vue.prototype.$openTips = function(opts) {
            this.$root.$emit('openTips', opts);
        }
        Vue.prototype.$closeTips = function() {
            this.$root.$emit('closeTips');
        }

        // 绑定手机验证
        Vue.prototype.$mobileDialog = function(opts) {
            this.$root.$emit('mobileDialog', opts);
        }

        // 绑定友圈密码
        Vue.prototype.$passwordDialog = function(opts) {
            this.$root.$emit('passwordDialog', opts);
        }

        Vue.prototype.$loadWxScript = function(src, callback) {

        }

        let promise = new Promise((resolve, reject) => {
            if (!window.WeixinJSBridge || !WeixinJSBridge.invoke) {
                document.addEventListener('WeixinJSBridgeReady', function() {
                    let flag = (window.__wxjs_environment === 'miniprogram');
                    resolve(flag);
                }, false);
            } else {
                let flag = (window.__wxjs_environment === 'miniprogram');
                resolve(flag);
            }
        })

        Vue.prototype.$wxReady = function() {
            return promise;
        }
    }

    install = ToolPlugin.install;
}